import java.sql.*;

public class Test {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        Connection conn = null;
        Statement s = null;
        ResultSet r = null;
        try {
            //加载JDBC程序，方式是反射
            Class.forName("com.mysql.jdbc.Driver");
            //获取数据库连接,couunnection接口，需要使用jdbc中的，不是mysql中的
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/java43?user=root&password=123456&useUnicode=true&characterEncoding=UTF-8&useSSL=false");
            System.out.println(conn);
            //通过创建对象操作应用对象
            s = conn.createStatement();
            // （1）调用Statement操作命令对象的executeQuery(sql)
            // （2）返回一个ResultSet结果集对象（查询sql执行的结果集）
            String myname = "asdjklas' or '1' = '1";
            r = s.executeQuery("select id,sn,name,qq_mail,classes_id from student where name = '" + myname + "'");
            //处理结果集:结果集可能是多行数据，需要遍历，调用next就移动到下一行，返回true代表该行有数据，返回false就代表该行没有数据
            while(r.next()){//一直遍历到最后没有数据
                int id = r.getInt("id");
                String sn = r.getString("sn");
                String name = r.getString("name");
                String qqMail = r.getString("qq_mail");
                int classesId = r.getInt("classes_id");
                System.out.printf("id=%s, sn=%s, name=%s, qqMail=%s, classesId=%s\n",
                        id, sn, name, qqMail, classesId);
            }
        }finally {
            //注意释放资源：
            //（1）无论什么情况都是需要释放的（异常）
            //（2）释放顺序和创建的顺序相反（结果集对象，操作命令对象，数据库连接对象）
            if(r != null)
                r.close();
            if(s != null)
                s.close();
            if (conn == null)
                conn.close();
        }
    }
}
